When transmitting or storing files, it is advantageous to store or transmit a hash value of the file to verify with high confidence that the received transmitted file and the retrieved stored file are identical to the originally transmitted file and the originally stored file respectively. A hash algorithm calculates a hash value from a file. If the hash value of the file is identical to a hash value of a copy of the file, or a hash value of the original file, then it can be determined with a high degree of confidence that the two files are bit-for-bit copies, or that the original file has not been altered over time. However, calculating the hash value of a large file is expensive in terms of time and processor and/or memory usage.